import type { StoryboardData } from './document'

/**
 * 分镜项目状态枚举
 */
export enum StoryboardProjectStatus {
  /** 草稿 */
  DRAFT = 'DRAFT',
  /** 进行中 */
  IN_PROGRESS = 'IN_PROGRESS',
  /** 已完成 */
  COMPLETED = 'COMPLETED',
  /** 已归档 */
  ARCHIVED = 'ARCHIVED'
}

/**
 * 分镜项目模板枚举
 */
export enum StoryboardProjectTemplate {
  /** 空白项目 */
  BLANK = 'BLANK',
  /** 短视频模板 */
  SHORT_VIDEO = 'SHORT_VIDEO',
  /** 广告模板 */
  COMMERCIAL = 'COMMERCIAL',
  /** 纪录片模板 */
  DOCUMENTARY = 'DOCUMENTARY',
  /** 微电影模板 */
  SHORT_FILM = 'SHORT_FILM'
}

/**
 * 分镜项目接口
 */
export interface StoryboardProject {
  /** 项目ID */
  id: string
  /** 项目名称 */
  name: string
  /** 项目描述 */
  description?: string
  /** 项目模板 */
  template: StoryboardProjectTemplate
  /** 项目状态 */
  status: StoryboardProjectStatus
  /** 创建时间 */
  createdAt: string
  /** 更新时间 */
  updatedAt: string
  /** 项目路径 */
  path?: string
  /** 项目标签 */
  tags?: string[]
  /** 项目统计信息 */
  stats: {
    /** 场景数量 */
    sceneCount: number
    /** 总时长（秒） */
    totalDuration: number
    /** 最后编辑时间 */
    lastEditedAt: string
  }
  /** 项目设置 */
  settings: {
    /** 自动保存 */
    autoSave: boolean
    /** 备份启用 */
    backupEnabled: boolean
    /** 协作模式 */
    collaborationEnabled: boolean
  }
}

/**
 * 创建分镜项目参数
 */
export interface CreateStoryboardProjectParams {
  /** 项目名称 */
  name: string
  /** 项目描述 */
  description?: string
  /** 项目模板 */
  template: StoryboardProjectTemplate
  /** 项目路径 */
  path?: string
  /** 项目标签 */
  tags?: string[]
  /** 初始分镜数据（可选，用于从AI生成或导入已有数据） */
  storyboardData?: StoryboardData
}

/**
 * 更新分镜项目参数
 */
export interface UpdateStoryboardProjectParams {
  /** 项目名称 */
  name?: string
  /** 项目描述 */
  description?: string
  /** 项目状态 */
  status?: StoryboardProjectStatus
  /** 项目标签 */
  tags?: string[]
  /** 项目统计信息 */
  stats?: StoryboardProject['stats']
  /** 项目设置 */
  settings?: StoryboardProject['settings']
}

/**
 * 分镜项目列表查询参数
 */
export interface StoryboardProjectListQuery {
  /** 按状态筛选 */
  status?: StoryboardProjectStatus
  /** 按模板筛选 */
  template?: StoryboardProjectTemplate
  /** 按标签筛选 */
  tags?: string[]
  /** 搜索关键词 */
  search?: string
  /** 排序字段 */
  sortBy?: keyof StoryboardProject
  /** 排序方向 */
  sortOrder?: 'asc' | 'desc'
  /** 偏移量 */
  offset?: number
  /** 限制数量 */
  limit?: number
}

/**
 * 分镜项目文件夹结构
 */
export interface StoryboardProjectFolder {
  /** 项目根路径 */
  projectPath: string
  /** 资源文件夹路径 */
  assetsPath: string
  /** 脚本文件夹路径 */
  scriptsPath: string
  /** 导出文件夹路径 */
  exportsPath: string
  /** 文档文件夹路径 */
  docsPath: string
  /** 参考资料文件夹路径 */
  refsPath: string
}

/**
 * 分镜项目服务接口
 */
export interface StoryboardProjectService {
  /** 获取项目列表 */
  getProjects(query?: StoryboardProjectListQuery): Promise<StoryboardProject[]>
  /** 根据ID获取项目 */
  getProjectById(id: string): Promise<StoryboardProject | null>
  /** 创建新项目 */
  createProject(params: CreateStoryboardProjectParams): Promise<StoryboardProject>
  /** 更新项目 */
  updateProject(id: string, params: UpdateStoryboardProjectParams): Promise<StoryboardProject>
  /** 删除项目 */
  deleteProject(id: string): Promise<void>
  /** 复制项目 */
  duplicateProject(id: string, newName?: string): Promise<StoryboardProject>
  /** 获取项目内容 */
  getProjectContent(id: string): Promise<StoryboardData | null>
  /** 更新项目内容 */
  updateProjectContent(id: string, content: StoryboardData): Promise<void>
  /** 获取最近访问的项目 */
  getRecentProjects(limit?: number): Promise<StoryboardProject[]>
  /** 标记项目为最近访问 */
  markProjectAccessed(id: string): Promise<void>
}